From f18a94fbfd3daf293481f7a5860614626a679244 Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Wed, 12 Feb 2025 18:48:47 +0100 Subject: [PATCH] try to detect if naming rules are enabled on server before auto rename Signed-off-by: Matthieu Gallien --- src/libsync/discoveryphase.h | 5 +++++ src/libsync/syncengine.cpp | 19 ++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/libsync/discoveryphase.h b/src/libsync/discoveryphase.h index 3382ffc13..855758b1f 100644 --- a/src/libsync/discoveryphase.h +++ b/src/libsync/discoveryphase.h @@ -343,6 +343,11 @@ public: QStringList _listExclusiveFiles; + QStringList _forbiddenFilenames; + QStringList _forbiddenBasenames; + QStringList _forbiddenExtensions; + QStringList _forbiddenChars; + bool _hasUploadErrorItems = false; bool _hasDownloadRemovedItems = false; diff --git a/src/libsync/syncengine.cpp b/src/libsync/syncengine.cpp index d5018149b..25e6bf414 100644 --- a/src/libsync/syncengine.cpp +++ b/src/libsync/syncengine.cpp @@ -647,7 +647,6 @@ void SyncEngine::startSync() _discoveryPhase = std::make_unique(); _discoveryPhase->_leadingAndTrailingSpacesFilesAllowed = _leadingAndTrailingSpacesFilesAllowed; - _discoveryPhase->_shouldEnforceWindowsFileNameCompatibility = _shouldEnforceWindowsFileNameCompatibility; _discoveryPhase->_account = _account; _discoveryPhase->_excludes = _excludedFiles.data(); const QString excludeFilePath = _localPath + QStringLiteral(".sync-exclude.lst"); @@ -672,6 +671,24 @@ void SyncEngine::startSync() return; } + const auto accountCaps = _account->capabilities(); + const auto forbiddenFilenames = accountCaps.forbiddenFilenames(); + const auto forbiddenBasenames = accountCaps.forbiddenFilenameBasenames(); + const auto forbiddenExtensions = accountCaps.forbiddenFilenameExtensions(); + const auto forbiddenChars = accountCaps.forbiddenFilenameCharacters(); + + _discoveryPhase->_forbiddenFilenames = forbiddenFilenames; + _discoveryPhase->_forbiddenBasenames = forbiddenBasenames; + _discoveryPhase->_forbiddenExtensions = forbiddenExtensions; + _discoveryPhase->_forbiddenChars = forbiddenChars; + if (!forbiddenFilenames.isEmpty() && + !forbiddenBasenames.isEmpty() && + !forbiddenExtensions.isEmpty() && + !forbiddenChars.isEmpty()) { + _shouldEnforceWindowsFileNameCompatibility = true; + _discoveryPhase->_shouldEnforceWindowsFileNameCompatibility = _shouldEnforceWindowsFileNameCompatibility; + } + // Check for invalid character in old server version QString invalidFilenamePattern = _account->capabilities().invalidFilenameRegex(); if (invalidFilenamePattern.isNull() -- 2.30.2